class Solution {
    // 1405. 最长快乐字符串
    public String longestDiverseString(int a, int b, int c) {
        // 定义二维数组，用来存放每个字符对应的数量
        int[][] arr = {{'a', a}, {'b', b}, {'c', c}};

        // 定义一个sb
        StringBuilder sb = new StringBuilder(a + b + c);
        while (true) {
            // 使用前先进行排序，按照数量从大到小排序
            Arrays.sort(arr, (x, y) -> y[1] - x[1]);
            int n = sb.length();

            // 如果数量最多元素个数为0，则直接退出
            if (arr[0][1] == 0) {
                break;
            }

            // 判断当前拼接的字符串后两位是否都为个数最多的字符，
            if (n >= 2 && sb.charAt(n - 1) == arr[0][0] && sb.charAt(n - 2) == arr[0][0]) {
                // 是的话判断次多的元素个数是否大于0，没有次多的话直接退出
                if (arr[1][1] == 0) {
                    break;
                }
                // 拼接次多的，数组次多个数--
                sb.append((char) arr[1][0]);
                arr[1][1]--;
            } else {
                // 直接拼接最多的元素，最多的元素个数--
                sb.append((char) arr[0][0]);
                arr[0][1]--;
            } 
        }
        return sb.toString();
    }
}